package com.xm.util;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.domain.v20180808.DomainClient;
import com.tencentcloudapi.domain.v20180808.models.CreatePhoneEmailRequest;
import com.tencentcloudapi.domain.v20180808.models.CreatePhoneEmailResponse;
import com.tencentcloudapi.domain.v20180808.models.SendPhoneEmailCodeRequest;
import com.tencentcloudapi.domain.v20180808.models.SendPhoneEmailCodeResponse;
/**
 * 发送邮箱验证码
 * @author 康文程
 * @date 2023-12-24 下午 1:52
 */
public class MailboxUtil {
    /**
     * 发送邮箱
     *
     * @return String
     * @throws TencentCloudSDKException 报错抛出
     */
    public static String sendEmail(String mailbox) throws TencentCloudSDKException {
        // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey，此处还需注意密钥对的保密
        // 代码泄露可能会导致 SecretId 和 SecretKey 泄露，并威胁账号下所有资源的安全性。
        Credential cred = new Credential("AKIDeFj03zvIhx3xiIK9Oi2JQTZbVGBxXvJA",
                "qWAfxD1mpwugHoBZp141oU4X0Ro5GLKH");
        // 实例化一个http选项，可选的，没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint("domain.tencentcloudapi.com");
        // 实例化一个client选项，可选的，没有特殊需求可以跳过
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        // 实例化要请求产品的client对象,clientProfile是可选的
        DomainClient client = new DomainClient(cred, "", clientProfile);
        // 实例化一个请求对象,每个接口都会对应一个request对象
        SendPhoneEmailCodeRequest req = new SendPhoneEmailCodeRequest();
        req.setCode(mailbox);
        req.setType(2L);
        // 返回的resp是一个SendPhoneEmailCodeResponse的实例，与请求对象对应
        SendPhoneEmailCodeResponse resp = client.SendPhoneEmailCode(req);
        // 没有报错则返回 200
        return "200";
    }
    /**
     * 验证验证码
     *
     * @param mailbox 邮箱
     * @param code    验证码
     * @throws TencentCloudSDKException 无
     */
    public static void mailboxVerificationCode(String mailbox, String code) throws TencentCloudSDKException {
        // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey，此处还需注意密钥对的保密
        Credential cred = new Credential("AKIDeFj03zvIhx3xiIK9Oi2JQTZbVGBxXvJA",
                "qWAfxD1mpwugHoBZp141oU4X0Ro5GLKH");
        // 实例化一个http选项，可选的，没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setEndpoint("domain.tencentcloudapi.com");
        // 实例化一个client选项，可选的，没有特殊需求可以跳过
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        // 实例化要请求产品的client对象,clientProfile是可选的
        DomainClient client = new DomainClient(cred, "", clientProfile);
        // 实例化一个请求对象,每个接口都会对应一个request对象
        CreatePhoneEmailRequest req = new CreatePhoneEmailRequest();
        req.setCode(mailbox);
        req.setType(2L);
        req.setVerifyCode(code);
        // 返回的resp是一个CreatePhoneEmailResponse的实例，与请求对象对应
        CreatePhoneEmailResponse resp = client.CreatePhoneEmail(req);
    }
}
